iT邦幫忙

2023 iThome 鐵人賽

DAY 30
1
Kotlin

Kotlin魔法:Spring Boot 3的fp奇幻冒險系列 第 30

[城鎮] 五種Test Double - Mock、SPY

  • 分享至 

  • xImage
  •  

今天是最後一天,讓我們繼續來介紹一下測試的夥伴

前情提要

我們昨天介紹了Test Double的Stub夥伴,今天要來介紹另一個Mock陣營的

Mock Object

Mock陣營是用來驗證並模擬互動結果的工具。
Mock主要是用來測試SUT使用DOC的Test Double,它主要是驗證SUT的行為。簡單來說就是測試SUT是否有正確的呼叫DOC! 我們不在意DOC是否有執行正確,只在乎是否有呼叫DOC成功。因此我們只要把Mock傳給SUT,讓它呼叫Mock後,有呼叫成功就是測試成功了。

這次用作披薩來舉例子了XD
假設我們要測試烤箱是否有好好的烤披薩! 對我們來說烤箱是SUT,而披薩則是DOC,我們只在乎烤箱是否有真的烤東西,放披薩(DOC)進去烤,因此我們只需要知道烤箱(SUT)是否有烤(呼叫)披薩(DOC),我們不用在意披薩到底是好了嗎? 還是焦掉了,我們只需要知道是否有烤過就好了XD

SPY Object

聽起來很帥,感覺SPY就是要潛入敵陣,然後收集情報給本陣營的!

SPY是用來驗證SUT對DOC造成的效果,剛剛的Mock是在乎是否有用到DOC,SPY則是是否有正確的用好DOC! 我們會在意DOC是否有執行正確,SUT有正確的對它進行影響。

再次以烤披薩來舉例XD

跟剛剛一樣,我們要測試烤箱(SUT)是否有好好的烤披薩(DOC),這次我們就要好好的監測披薩的溫度,上面的料是否都熟了等,我們在意披薩烤出來的品質。它不能是焦的!

以程式來說,我們就會用把SPY傳給SUT,讓SUT呼叫SPY,看SPY的結果是否是正確的!

總結

終於結束30天的旅程了,中間經歷了幾次連假、去日本旅行、加班;說長不長,說短不短的旅程,也感謝讀完的讀者們,感覺這次介紹了蠻多Test的概念,希望大家也能更好的運用測試,Kotlin也用得越來越順手XD


上一篇
[城鎮] 五種Test Double - Dummy、Stub、Fake
系列文
Kotlin魔法:Spring Boot 3的fp奇幻冒險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
Brandy
iT邦新手 2 級 ‧ 2023-10-15 08:28:00

恭喜完賽!

RichardW iT邦新手 4 級 ‧ 2023-10-15 16:13:27 檢舉

ヽ(・∀・)ノヽ(・∀・)ノヽ(・∀・)ノ

0
RichardW
iT邦新手 4 級 ‧ 2023-10-15 16:13:41

恭喜完賽 ヽ(・∀・)ノヽ(・∀・)ノヽ(・∀・)ノ

我要留言

立即登入留言